1. Technical Field
The invention relates in general to the field of software application performance evaluation and in particular to a method and apparatus for noninvasive performance evaluation of a software application. Still more particularly, the present invention relates to a method and apparatus for utilizing a compiler application to evaluate the performance of a software application having multiple procedures.
2. Description of the Related Art
Performance analysis of software applications within a data processing system is a well known technique in the prior art. Two basic techniques are generally utilized for such analysis. Firstly, a timing strategy may be utilized to analyze a software application. A system clock may be utilized to time selected events within the application by placing so-called "hooks" or trace points within the code of the application and then storing the time at which each of these "hooks" occurs.
This technique works well; however, it is necessary to be able to modify the application and/or the operating system in order to insert these software "hooks." Selected operating systems, such as the OS/2 Operating System distributed by International Business Machines Corporation of Armonk, N.Y. include a high degree of isolation between applications within the operating system and are not easily modifiable. In such an operating system the user may not be aware of the internal workings of an application within the operating system and may not be able to easily modify the code within such an application. Further, this method requires a significant programming effort in order to add these trace points or "hooks" to the program under evaluation.
The second technique for analyzing a software application involves the attachment of instrumentation hardware such as the iPAT or ICE development tools by the Intel Corporation of Santa Clara, Calif. These development tools are expensive and frequently require multiple executions of test scenarios to completely profile a program. This is due to the fact that these development tools have a limited number of address ranges which may be profiled simultaneously and many software applications have more routines than may be profiled in a single pass. Multiple passes through a software application with such a development tool will require careful control of the experiments and reconciliation of the data collected in each of the multiple passes. Additionally, such hardware systems may be utilized in conjunction with installed trace points or "hooks" to evaluate a software application but such systems require the software application to be modified as discussed above.
It should therefore be apparent that a need exists for a method and apparatus for performing an execution analysis of a selected software application within a multi-thread operating system which may be accomplished without the utilization of extensive software modifications or complex instrumentation hardware.